### Summary

If a network interface is named 'primary', the current set of `ip addr` commands issued by module_utils/facts/network/linux.py will not give the desired results, resulting in wrong ansible facts.

The fix seems very simple, instead of:
```
args = [ip_path, 'addr', 'show', 'primary', device]
...
args = [ip_path, 'addr', 'show', 'secondary', device]
```

We can do:
```
args = [ip_path, 'addr', 'show', 'primary', 'dev', device]
...
args = [ip_path, 'addr', 'show', 'secondary', 'dev', device]
```

By adding "dev" keyword, then it makes it clear that `ip addr` command should return data from that specific device, regardless of whether the device name conflicts with another `ip addr show` keyword (such as "primary", "secondary", "deprecated", "dadfailed", "temporary", etc)


### Issue Type

Bug Report

### Component Name

facts

### Ansible Version

```console
$ ansible --version

ansible [core 2.11.8] 
  config file = None
  configured module search path = ['/Users/rob.muir/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/rob.muir/workspace/geos/build/.env/lib/python3.9/site-packages/ansible
  ansible collection location = /Users/rob.muir/.ansible/collections:/usr/share/ansible/collections
  executable location = /Users/rob.muir/workspace/geos/build/.env/bin/ansible
  python version = 3.9.1 (default, Dec 28 2020, 11:24:06) [Clang 12.0.0 (clang-1200.0.32.28)]
  jinja version = 3.1.1
  libyaml = False
```


### Configuration

```console
$ ansible-config dump --only-changed
<no output>
```


### OS / Environment

MacOS X controller, Centos 7 host

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```
# Add network interface named "primary"
ip link add primary type dummy
# Add some IP addresses to the device to test discovery
ip address add 192.168.50.1/24 dev primary
ip address add 192.168.50.2/24 dev primary
ip address add 192.168.51.1/24 dev primary
# set interface "UP"
ip link set primary up
# discover facts
```


### Expected Results

Expect ansible to discover IP addresses (both primary and secondary) correctly,.
```
ok: [test] => {
    "hostvars": {
        "test": {
            "ansible_all_ipv4_addresses": [
                "192.168.50.1",
                "192.168.51.1",
                "192.168.50.2",
                "10.0.2.15"
            ],
```

### Actual Results

```console
Unfortunately, today any actual secondary addresses will be missing. Also there will be duplicates, which happens because the interface name collides with a special keyword to `ip address show` and because we arent supplying `dev` to make it unambiguous:

ok: [test] => {
    "hostvars": {
        "test": {
            "ansible_all_ipv4_addresses": [
                "10.0.2.15",
                "192.168.50.1",
                "192.168.51.1",
                "10.0.2.15",
                "192.168.50.1",
                "192.168.51.1",
                "10.0.2.15"
            ],
```
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
v4=[ip_path, '-4', 'route', 'get', '8.8.8.8'],
            v6=[ip_path, '-6', 'route', 'get', '2404:6800:400a:800::1012']
        )
        interface = dict(v4={}, v6={})
        for v in 'v4', 'v6':
            if (v == 'v6' and collected_facts.get('ansible_os_family') == 'RedHat' and
                    collected_facts.get('ansible_distribution_version', '').startswith('4.')):
                continue
            if v == 'v6' and not socket.has_ipv6:
                continue
            rc, out, err = self.module.run_command(command[v], errors='surrogate_then_replace')
            if not out:
                
                
                continue
            words = out.splitlines()[0].split()
            
            if len(words) > 0 and words[0] == command[v][-1]:
                for i in range(len(words) - 1):
                    if words[i] == 'dev':
                        interface[v]['interface'] = words[i + 1]
                    elif words[i] == 'src':
                        interface[v]['address'] = words[i + 1]
                    elif words[i] == 'via' and words[i + 1] != command[v][-1]:
                        interface[v]['gateway'] = words[i + 1]
        return interface['v4'], interface['v6']
    def get_interfaces_info(self, ip_path, default_ipv4, default_ipv6):
        interfaces = {}
        ips = dict(
            all_ipv4_addresses=[],